// 全景窗公共插件
// date: 2021-07-10
// author: 是小助理啊
// import Vue from "vue";
// import { Toast } from 'mint-ui';
// import { API_MEMBER_INFO } from '@/store/api';
// import { DOMAIN, TEST, BUILD } from '@/config' // 获取当前域名domain 在配置文件手动配置是http  还是https
// import axios from "@/public/axios";
import CryptoJs from 'crypto-js'

const formatDate = function (date, fmts) {
  // 时间戳转换
  var fmt = 'yyyy-MM-dd hh:mm:ss'
  if (fmts) {
    fmt = fmts
  }
  // var date = new Date(date * 1000);
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  }
  const o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + ''
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      )
    }
  }
  return fmt
}

const formatDate2 = function (date, fmts) {
  // 时间戳转换
  var fmt = 'yyyyMMddhhmmss'
  if (fmts) {
    fmt = fmts
  }
  // var date = new Date(date * 1000);
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  }
  const o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + ''
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      )
    }
  }
  return fmt
}

const cookie = function (name, value, options) {
  // 如果第二个参数存在
  if (typeof value !== 'undefined') {
    options = options || {}
    if (value == null || value === 'null') {
      // 设置失效时间
      options.expires = -1
    }
    var expires = ''
    // 如果存在事件参数项，并且类型为 number，或者具体的时间，那么分别设置事件
    if (
      options.expires &&
      (typeof options.expires === 'number' || options.expires.toUTCString)
    ) {
      var date
      if (typeof options.expires === 'number') {
        date = new Date()
        date.setTime(date.getTime() + options.expires * 24 * 60 * 60 * 1000)
      } else {
        date = options.expires
      }
      expires = '; expires=' + date.toUTCString()
    }
    // var path = options.path ? '; path=' + options.path : '/', // 设置路径
    // domin 环境不同  不同的cookie domain
    const _testDomain = ''
    // if (TEST) {
    //     // 测试环境
    //     if (BUILD) {
    //         _testDomain = '; domain=.yesshang.cn';
    //     } else {
    //         _testDomain = '';
    //     }
    // } else {
    //     // 正式环境
    //     _testDomain = '; domain=.dffengguang.com.cn';
    // }

    var path = options.path ? '; path=' + options.path : '; path=' + '/' // 设置路径
    var domain = options.domain ? '; domain=' + options.domain : _testDomain
    // domain = options.domain ? '; domain=' + options.domain : '; domain=' + '/',
    // domain = options.domain ? '; domain=' + options.domain : '; domain=.yesshang.cn',
    // domain = options.domain ? '; domain=' + options.domain : '; domain=.dffengguang.com.cn', // 设置域
    var secure = options.secure ? '; secure' : '' // 设置安全措施，为 true 则直接设置，否则为空

    // 把所有字符串信息都存入数组，然后调用 join() 方法转换为字符串，并写入 Cookie 信息
    document.cookie = [
      name,
      '=',
      encodeURIComponent(value),
      expires,
      path,
      domain,
      secure
    ].join('')
  } else {
    // 如果第二个参数不存在
    var CookieValue = null
    if (document.cookie && document.cookie !== '') {
      var Cookies = document.cookie.split(';')
      for (var i = 0; i < Cookies.length; i++) {
        var Cookie = (Cookies[i] || '').replace(/^\s+|\s+$/g, '')
        if (Cookie.substring(0, name.length + 1) === name + '=') {
          CookieValue = decodeURIComponent(Cookie.substring(name.length + 1))
          break
        }
      }
    }
    return CookieValue
  }
}

// -
const encrypt = function (word) {
  const key = CryptoJs.enc.Utf8.parse('ECB024F249153D401D1A0D691D62B77F')
  const srcs = CryptoJs.enc.Utf8.parse(word)
  const encrypted = CryptoJs.AES.encrypt(srcs, key, {
    mode: CryptoJs.mode.ECB,
    padding: CryptoJs.pad.Pkcs7
  })
  return encrypted.toString()
}

// +
const decrypt = function (word) {
  const key = CryptoJs.enc.Utf8.parse('ECB024F249153D401D1A0D691D62B77F')
  const decrypt = CryptoJs.AES.decrypt(word, key, {
    mode: CryptoJs.mode.ECB,
    padding: CryptoJs.pad.Pkcs7
  })
  return CryptoJs.enc.Utf8.stringify(decrypt).toString()
}

export default {
  formatDate,
  formatDate2,
  cookie,
  encrypt,
  decrypt
}

function padLeftZero (str) {
  return ('00' + str).substr(str.length)
}
